package com.cbh.amadeus.client.receiver.service;

import com.cbh.amadeus.common.enums.MessageResult;

/**
 * 消费者 抽象接口
 * <p>
 * 泛型指定为实际用来接收消息的实体类
 *
 * @author ChenBiHui
 * @date 2025/4/27
 */
public interface MessageHolder<T> {

    /**
     * 消费者方法 需自行保证幂等
     *
     * @param tenant    租户
     * @param topic     主题
     * @param messageId 唯一消息ID
     * @param payload   消息体
     * @return 消息结果
     */
    MessageResult attain(String tenant, String topic, String messageId, T payload);
}
